<?php
	
	require_once 'View/RegisterView.php';
	require_once 'Model/RegisterModel.php';
	
	class RegisterController{
		
		private $xhtml = "";
		private $dbconnection = NULL;
		private $loginHandler;
		private $registerView;
		private $registerModel;
		
		public function __construct(DBConnection $dbconnection, LoginHandler $loginHandler){
			$this->dbconnection = $dbconnection;
			$this->loginHandler = $loginHandler;
			$this->registerModel = new RegisterModel($this->dbconnection);
			$this->registerView = new RegisterView();
		}
		public function DoControl(){
			
			// Är användaren inloggad?
			if($this->loginHandler->isLoggedIn() == FALSE){
				
				$this->xhtml = $this->registerView->DoRegisterForm();	
							
				//Om användaren har klickat på 'registrera'
				if ($this->registerView->TriedToRegister() == TRUE) {
									
					$validate = new InputValidation();
					// Finns det data nog för att registrera en användare?
					if ($this->registerView->IsDataSet() === TRUE) {
						
						// Är lösenorden likadana?												
						if($this->registerView->comparePasswords() == FALSE){													
							$validate->AddError("Lösenorden matchar inte");					
						}							
							
						$user = User::CreateUser($this->registerView->GetEmailAddress(), 
												$this->registerView->GetUserName(), 
												$this->registerView->GetPassword());
						
						// Validera data i modellen
						$validate = $this->registerModel->ValidateUser($user, $validate);
						
						// Finns det några fel, skriv ut dem. Annars lägg till användaren.
						if ($validate->HasErrors()) {							
							$this->xhtml .= $this->registerView->ShowErrors($validate->GetErrors());	
						}else{
							$this->registerModel->AddUser($user);
						}						
					}											
				}
			}
						
			$page = new Page();
			$page->body = $this->xhtml;
			return $page;
		}
		
		
	}